package com.sse.server;

import java.net.ServerSocket;
import java.net.Socket;

public class ServidorSockets implements Runnable {

	static final int PUERTO = 5000;
	private static final int NUMERO_REINTENTOS_SERVIDOR = 3;

	public void run() {
		// Se reintenta el numero de veces configurado de levantar el servidor
		// para mantener la disponibilidad
		for (int i = 0; i < NUMERO_REINTENTOS_SERVIDOR; i++) {
			try {
				// Se levanta el socket del servidor
				ServerSocket skServidor = new ServerSocket(PUERTO);
				// Se le da mayor prioridad al ancho de banda y a la latencia
				skServidor.setPerformancePreferences(0, 2, 2);

				// Se crea un ciclo infinito para aceptar inmuebles
				while (true) {
					// Se aceptan los inmuebles
					Socket skCliente = skServidor.accept();
					// Se acepta un nuevo inmueble en un nuevo hilo
					(new HiloServidor(skCliente)).start();
				}
			} catch (Exception e) {
				// Se muestra el mensaje de error
				System.out.println(e.getMessage());
			}
		}
	}

}
